<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <p data-lake-id="u3df0c441" id="u3df0c441"><span data-lake-id="ua1245c4f" id="ua1245c4f">E – Element (在集合中使用，因为集合中存放的是元素)</span></p>
  <p data-lake-id="u860c9845" id="u860c9845"><span data-lake-id="u8c347498" id="u8c347498">T – Type（Java 类）</span></p>
  <p data-lake-id="u51ccb075" id="u51ccb075"><span data-lake-id="u4a9bff44" id="u4a9bff44">K – Key（键）</span></p>
  <p data-lake-id="u9d69f2fa" id="u9d69f2fa"><span data-lake-id="u79d2b677" id="u79d2b677">V – Value（值）</span></p>
  <p data-lake-id="u736246a2" id="u736246a2"><span data-lake-id="ucff3c1aa" id="ucff3c1aa">N – Number（数值类型）</span></p>
  <p data-lake-id="u81220ec6" id="u81220ec6"><span data-lake-id="u2b251a0d" id="u2b251a0d">？ – 表示不确定的java类型（无限制通配符类型）</span></p>
  <p data-lake-id="u0bac740d" id="u0bac740d"><span data-lake-id="uae1e06db" id="uae1e06db">S、U、V – 2nd、3rd、4th types</span></p>
  <p data-lake-id="ufe827a60" id="ufe827a60"><span data-lake-id="u28921ba4" id="u28921ba4">Object – 是所有类的根类，任何类的对象都可以设置给该Object引用变量，使用的时候可能需要类型强制转换，但是用使用了泛型T、E等这些标识符后，在实际用之前类型就已经确定了，不需要再进行类型强制转换。</span></p>
  <p data-lake-id="ua2368c93" id="ua2368c93"><span data-lake-id="u6a3acbb0" id="u6a3acbb0">​</span><br></p>
  <p data-lake-id="u216de52b" id="u216de52b"><span data-lake-id="u7629bd0a" id="u7629bd0a">​</span><br></p>
  <h1 data-lake-id="nKiK0" id="nKiK0"><span data-lake-id="ud4e73add" id="ud4e73add">扩展知识</span></h1>
  <p data-lake-id="u4183e535" id="u4183e535"><br></p>
  <h2 data-lake-id="K9pDi" id="K9pDi"><span data-lake-id="u35cd8cbc" id="u35cd8cbc">代码示例</span></h2>
  <p data-lake-id="ue5b09f11" id="ue5b09f11"><br></p>
  <pre lang="java"><code>
// 示例1：使用T作为泛型类型参数，表示任何类型
public class MyGenericClass&lt;T&gt; {
    private T myField;

    public MyGenericClass(T myField) {
        this.myField = myField;
    }

    public T getMyField() {
        return myField;
    }
}

// 示例2：使用K、V作为泛型类型参数，表示键值对中的键和值的类型
public class MyMap&lt;K, V&gt; {
    private List&lt;Entry&lt;K, V&gt;&gt; entries;

    public MyMap() {
        entries = new ArrayList&lt;&gt;();
    }

    public void put(K key, V value) {
        Entry&lt;K, V&gt; entry = new Entry&lt;&gt;(key, value);
        entries.add(entry);
    }

    public V get(K key) {
        for (Entry&lt;K, V&gt; entry : entries) {
            if (entry.getKey().equals(key)) {
                return entry.getValue();
            }
        }
        return null;
    }

    private class Entry&lt;K, V&gt; {
        private K key;
        private V value;

        public Entry(K key, V value) {
            this.key = key;
            this.value = value;
        }

        public K getKey() {
            return key;
        }

        public V getValue() {
            return value;
        }
    }
}

// 示例3：使用E作为泛型类型参数，表示集合中的元素类型
public class MyList&lt;E&gt; {
    private List&lt;E&gt; elements;

    public MyList() {
        elements = new ArrayList&lt;&gt;();
    }

    public void add(E element) {
        elements.add(element);
    }

    public E get(int index) {
        return elements.get(index);
    }
}

// 示例4：使用Object作为泛型类型参数，表示可以接受任何类型
public class MyGenericClass {
    private Object myField;

    public MyGenericClass(Object myField) {
        this.myField = myField;
    }

    public Object getMyField() {
        return myField;
    }
}

</code></pre>
 </body>
</html>